home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / spic52.zip / DISK1 / 32SINST.MST < prev    next >
Text File  |  1993-04-10  |  9KB  |  355 lines

  1. '**************************************************************************
  2. '*                       Nutmeg32 setup
  3. '**************************************************************************
  4.  
  5. '' $DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST BADPATH       = 6400
  19.  
  20. CONST HELPWELCOME   = 1000
  21. CONST VERPATH       = 1100
  22. CONST EXITFAILNOTWIN31 = 1200
  23. CONST EXITFAILNOTENH = 1300
  24. CONST NUTMEG32INST  = 1400
  25. CONST NUTMEG32PATH  = 1500
  26. CONST HELPNUTMEG32  = 1600
  27. CONST EXITSUCCESS_NT = 1700
  28. CONST ASKQUIT_NT    = 2000
  29. CONST WELCOME_NT    = 2200
  30. CONST EXITQUIT_NT   = 2300
  31. CONST HELPWELCOME_NT = 2400
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 1
  35.  
  36. GLOBAL DESTSYS$      ''Windows\System directory.
  37. GLOBAL DEST32S$      ''Windows\System\Win32s directory
  38. GLOBAL DESTNUTMEG$     ''Nutmeg32 directory
  39. GLOBAL OS$             ''Operating System
  40.  
  41. DECLARE SUB Install
  42. DECLARE SUB UpdateSystemIni
  43. DECLARE SUB RebootSystem
  44. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  45. DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
  46. DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" (arg1$) AS INTEGER
  47.  
  48. INIT:
  49.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle " Win32s / Nutmeg32 Setup Program"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.     szInf$ = GetSymbolValue("STF_CWDDIR") + "nutmeg32.inf"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     DESTSYS$ = GetWindowsSysDir()
  62.     DEST32S$ = DESTSYS + "WIN32S\"
  63.  
  64. '$IFDEF DEBUG
  65.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  66.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.     GOTO QUIT
  70.     END IF
  71. '$ENDIF ''DEBUG
  72.  
  73. CHECK:
  74.     OS$ = "Operating system: " + ENVIRON$("OS")
  75.  
  76.     IF ENVIRON$("OS") = "Windows NT" THEN
  77.         i% = DoMsgBox("Windows NT", "Environment", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  78.         NT = 1
  79.         ExitCode% = EXITSUCCESSNT
  80.         GOTO NT
  81.     END IF
  82.     IF ENVIRON$("OS") = "Windows_NT" THEN
  83.         i% = DoMsgBox("Windows NT", "Environment", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  84.         NT = 1
  85.         ExitCode% = EXITSUCCESSNT
  86.         GOTO NT
  87.     END IF
  88.     IF GetWindowsMajorVersion < 3 THEN
  89.     ExitCode% = EXITFAILNOTWIN31
  90.     GOTO QUIT
  91.     END IF
  92.     IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 1 THEN
  93.     ExitCode% = EXITFAILNOTWIN31
  94.     GOTO QUIT
  95.     END IF
  96.     IF GetWindowsMode < 2  THEN     '' Not Enhanced or Windows NT
  97.     ExitCode% = EXITFAILNOTENH
  98.     GOTO QUIT
  99.     END IF
  100.     NT = 0
  101.     ExitCode% = EXITSUCCESS
  102.  
  103.     NT:
  104.  
  105.  
  106. WELCOME:
  107.     IF NT = 1 THEN
  108.       sz$ = UIStartDlg(CUIDLL$, WELCOME_NT, "FInfoDlgProc", HELPWELCOME_NT, HELPPROC$)
  109.     END IF
  110.  
  111.     IF NT = 0 THEN
  112.       sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELPWELCOME, HELPPROC$)
  113.     END IF
  114.  
  115.     IF sz$ = "CONTINUE" THEN
  116.     UIPop 1
  117.     ELSE
  118.     GOSUB ASKQUIT
  119.     GOTO WELCOME
  120.     END IF
  121.    IF NT = 1 THEN
  122.         GOTO NUTMEG32
  123.    END IF
  124.  
  125. GETWIN32SPATH:
  126.     SetSymbolValue "EditTextIn", DESTSYS$
  127.     SetSymbolValue "EditFocus", "END"
  128.  
  129. GETPATHL1:
  130.     sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", HELPWELCOME, HELPPROC$)
  131.  
  132.     IF sz$ = "CONTINUE" THEN
  133.     IF IsDirWritable(DESTSYS$) = 0 THEN
  134.         GOSUB BADPATH
  135.         GOTO GETPATHL1
  136.     END IF
  137.     UIPop 1
  138.     ELSEIF sz$ = "REACTIVATE" THEN
  139.     GOTO GETPATHL1
  140.     ELSEIF sz$ = "BACK" THEN
  141.     UIPop 1
  142.     GOTO WELCOME
  143.     ELSE
  144.     GOSUB ASKQUIT
  145.     GOTO GETPATHL1
  146.     END IF
  147.  
  148. COPYFILES:
  149.  
  150.     CreateDir DEST32S$, cmoNone
  151.       OpenLogFile MakePath(DEST32S$, "W32SSET.LOG"), 0
  152.  
  153.     Install
  154.     UpdateSystemIni
  155.  
  156.     CloseLogFile
  157.  
  158. NUTMEG32:
  159.     IF NT = 0 THEN
  160.         sz$ = UIStartDlg(CUIDLL$, NUTMEG32INST, "FInfoDlgProc",0, "")
  161.         IF sz$ = "CONTINUE" THEN
  162.         UIPop 1
  163.         ELSE
  164.         GOTO QUIT
  165.         END IF
  166.     END IF
  167.  
  168. GETFREEPATH:
  169.     DESTNUTMEG$ = MID$(DESTSYS$,1,3) + "WIN32APP\NUTMEG32\"
  170.     SetSymbolValue "EditTextIn", DESTNUTMEG$
  171.     SetSymbolValue "EditFocus", "END"
  172.  
  173. GETFREEPATHL1:
  174.     sz$ = UIStartDlg(CUIDLL$, NUTMEG32PATH, "FEditDlgProc", HELPNUTMEG32, HELPPROC$)
  175.  
  176.     IF sz$ = "CONTINUE" THEN
  177.     DESTNUTMEG$ = GetSymbolValue("EditTextOut")
  178.  
  179.     ''Validate new path.
  180.     IF IsDirWritable(DESTNUTMEG$) = 0 THEN
  181.         GOSUB BADPATH
  182.         GOTO GETFREEPATHL1
  183.     END IF
  184.     UIPop 1
  185.  
  186.     GOTO COPYNUTMEG32
  187.     ELSEIF sz$ = "REACTIVATE" THEN
  188.     GOTO GETFREEPATHL1
  189.     ELSEIF sz$ = "EXIT" THEN
  190.     UIPop 1
  191.     GOTO QUIT
  192.     END IF
  193.  
  194. COPYNUTMEG32:
  195.     ClearCopyList
  196.     CreateDir DESTNUTMEG$, cmoNone
  197.  
  198.     IF NT = 0 THEN
  199.       OpenLogFile MakePath(DEST32S$, "SETUP.LOG"), 0
  200.     END IF
  201.  
  202.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  203.     IF NT = 0 THEN
  204.         WriteToLogFile ""
  205.         WriteToLogFile "  User chose as destination directory: '" + DESTNUTMEG$ + "'"
  206.         WriteToLogFile ""
  207.         WriteToLogFile "May have had to create the directory: " + DESTNUTMEG$
  208.         WriteToLogFile ""
  209.     END IF
  210.  
  211.     AddSectionFilesToCopyList "Win32appNutmeg32", SrcDir$, DESTNUTMEG$
  212.     CopyFilesInCopyList
  213.  
  214.     CreateProgmanGroup "WeBeWare's Nutmeg & Spice", "", cmoNone
  215.     ShowProgmanGroup   "WeBeWare's Nutmeg & Spice", 1, cmoNone
  216.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Nutmeg32", DESTNUTMEG$ + "NUTMEG32.EXE", "", cmoOverwrite
  217.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Spice32", DESTNUTMEG$ + "SPICE32.EXE", "", cmoOverwrite
  218.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Readme.1st", "NOTEPAD.EXE " + DESTNUTMEG$ + "readme.1st", "", cmoOverwrite
  219.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Readme.txt", "NOTEPAD.EXE " + DESTNUTMEG$ + "readme.txt", "", cmoOverwrite
  220.     IF NT = 0 THEN
  221.         CloseLogFile
  222.     END IF 
  223.  
  224.  
  225.  
  226. QUIT:
  227.     ON ERROR GOTO ERRQUIT
  228.     IF ERR = 0 THEN
  229.     dlg% = ExitCode%
  230.     ELSEIF ERR = STFQUIT THEN
  231.     IF NT = 1 THEN
  232.         dlg% = EXITQUIT_NT
  233.     ELSE
  234.         dlg% = EXITQUIT
  235.         END IF
  236.     ELSE
  237.     dlg% = EXITFAILURE
  238.     END IF
  239.  
  240. QUITL1:
  241.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  242.     IF sz$ = "REACTIVATE" THEN
  243.     GOTO QUITL1
  244.     END IF
  245.     UIPop 1
  246.  
  247.     IF NT = 0 THEN
  248.       RebootSystem
  249.     END IF
  250.     END
  251.  
  252. ERRQUIT:
  253.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  254.     END
  255.  
  256.  
  257.  
  258. BADPATH:
  259.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  260.     IF sz$ = "REACTIVATE" THEN
  261.     GOTO BADPATH
  262.     END IF
  263.     UIPop 1
  264.     RETURN
  265.  
  266.  
  267.  
  268.   ASKQUIT:
  269.     IF NT = 1 THEN
  270.       sz$ = UIStartDlg(CUIDLL$, ASKQUIT_NT, "FQuitDlgProc", 0, "")
  271.     END IF
  272.  
  273.     IF NT = 0 THEN
  274.       sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  275.     END IF
  276.  
  277.     IF sz$ = "EXIT" THEN
  278.     UIPopAll
  279.     ERROR STFQUIT
  280.     ELSEIF sz$ = "REACTIVATE" THEN
  281.     GOTO ASKQUIT
  282.     ELSE
  283.     UIPop 1
  284.     END IF
  285.     RETURN
  286.  
  287.  
  288.  
  289. '**
  290. '** Purpose:
  291. '**     Builds the copy list and performs all installation operations.
  292. '** Arguments:
  293. '**     none.
  294. '** Returns:
  295. '**     none.
  296. '*************************************************************************
  297. SUB Install STATIC
  298.  
  299.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  300.     IF NT = 0 THEN
  301.         WriteToLogFile ""
  302.         WriteToLogFile "  User chose as destination directory: '" + DESTSYS$ + "'"
  303.         WriteToLogFile ""
  304.         WriteToLogFile "May have had to create the directory: " + DESTSYS$
  305.         WriteToLogFile ""
  306.     END IF
  307.  
  308.     AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
  309.     AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  310.  
  311.     t% = RestartWindows( GetWindowsSysDir() + "OLECLI.DLL" )
  312.     SetRestartDir GetWindowsDir()
  313.     CopyFilesInCopyList
  314.  
  315. END SUB
  316.  
  317. SUB UpdateSystemIni STATIC
  318.  
  319.     VxDPath$ = DEST32S$ + "W32S.386"
  320.     SystemIniPath$ = GetWindowsDir()
  321.  
  322.     t% = MakeSystemIni(SystemIniPath$, VxdPath$)
  323.  
  324. END SUB
  325.  
  326. SUB RebootSystem STATIC
  327.  
  328.     i% = RestartListEmpty()
  329.     i% = ExitExecRestart()
  330.  
  331. END SUB
  332.  
  333.  
  334. '**
  335. '** Purpose:
  336. '**     Appends a file name to the end of a directory path,
  337. '**     inserting a backslash character as needed.
  338. '** Arguments:
  339. '**     szDir$  - full directory path (with optional ending "\")
  340. '**     szFile$ - filename to append to directory
  341. '** Returns:
  342. '**     Resulting fully qualified path name.
  343. '*************************************************************************
  344. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  345.     IF szDir$ = "" THEN
  346.     MakePath = szFile$
  347.     ELSEIF szFile$ = "" THEN
  348.     MakePath = szDir$
  349.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  350.     MakePath = szDir$ + szFile$
  351.     ELSE
  352.     MakePath = szDir$ + "\" + szFile$
  353.     END IF
  354. END FUNCTION
  355.